home *** CD-ROM | disk | FTP | other *** search
/ Gamers Delight 2 / Gamers Delight 2.iso / Aminet / game / role / AMScen_0_9.lha / AMScen / chat.m < prev    next >
Text File  |  1995-01-21  |  17KB  |  755 lines

  1. /*
  2.  * Amiga MUD
  3.  *
  4.  * Copyright (c) 1995 by Chris Gray
  5.  */
  6.  
  7. /*
  8.  * chat.m - add a simple chat mode.
  9.  */
  10.  
  11. private tp_chat CreateTable().
  12. use tp_chat
  13.  
  14. define tp_chat ChatThing CreateThing(nil).
  15. define tp_chat NoiseAdverbs CreateStringProp().
  16. define tp_chat ActionAdverbs CreateStringProp().
  17. ChatThing@NoiseAdverbs := "".
  18. ChatThing@ActionAdverbs := "".
  19.  
  20. define tp_chat p_chSaveAction CreateActionProp().
  21. define tp_chat p_chSaveIdle CreateActionProp().
  22. define tp_chat p_chSavePrompt CreateStringProp().
  23. define tp_chat p_chChatting CreateBoolProp().
  24.  
  25. define tp_chat p_chAliases CreateThingListProp().
  26. define tp_chat p_chKey CreateStringProp().
  27. define tp_chat p_chContents CreateStringProp().
  28.  
  29. define tp_chat proc chatHandler(string line)void:
  30.     thing me, alias;
  31.     list thing aliases;
  32.     int count;
  33.     string word, contents;
  34.     bool found;
  35.  
  36.     me := Me();
  37.     if line = "." then
  38.     ignore SetPrompt(me@p_chSavePrompt);
  39.     me -- p_chSavePrompt;
  40.     ignore SetCharacterIdleAction(me@p_chSaveIdle);
  41.     me -- p_chSaveIdle;
  42.     ignore SetCharacterInputAction(me@p_chSaveAction);
  43.     me -- p_chSaveAction;
  44.     me -- p_chChatting;
  45.     elif SubString(line, 0, 1) = "!" then
  46.     call(me@p_chSaveAction, void)(SubString(line, 1, Length(line) - 1));
  47.     else
  48.     aliases := me@p_chAliases;
  49.     SetTail(line);
  50.     word := GetWord();
  51.     if word == "alias" then
  52.         word := GetWord();
  53.         if word = "" then
  54.         if aliases = nil then
  55.             Print("You have no chat aliases.\n");
  56.         else
  57.             count := Count(aliases);
  58.             Print("Chat aliases:\n");
  59.             while count ~= 0 do
  60.             count := count - 1;
  61.             alias := aliases[count];
  62.             Print("  ");
  63.             Print(alias@p_chKey);
  64.             Print(" => ");
  65.             Print(alias@p_chContents);
  66.             Print("\n");
  67.             od;
  68.         fi;
  69.         else
  70.         Print("Chat alias '");
  71.         Print(word);
  72.         Print("' ");
  73.         found := false;
  74.         if aliases ~= nil then
  75.             count := Count(aliases);
  76.             while count ~= 0 and not found do
  77.             count := count - 1;
  78.             alias := aliases[count];
  79.             if alias@p_chKey == word then
  80.                 found := true;
  81.             fi;
  82.             od;
  83.         fi;
  84.         contents := GetTail();
  85.         if contents = "" then
  86.             if found then
  87.             ClearThing(alias);
  88.             DelElement(aliases, alias);
  89.             Print("removed.\n");
  90.             else
  91.             Print("does not exist.\n");
  92.             fi;
  93.         else
  94.             if SubString(contents, 0, 1) = "\"" then
  95.             contents := SubString(contents, 1, Length(contents)-2);
  96.             fi;
  97.             if found then
  98.             alias@p_chContents := contents;
  99.             Print("updated.\n");
  100.             else
  101.             if aliases = nil then
  102.                 aliases := CreateThingList();
  103.                 me@p_chAliases := aliases;
  104.             fi;
  105.             alias := CreateThing(nil);
  106.             alias@p_chKey := word;
  107.             alias@p_chContents := contents;
  108.             AddTail(aliases, alias);
  109.             Print("added.\n");
  110.             fi;
  111.         fi;
  112.         fi;
  113.     else
  114.         alias := nil;
  115.         if aliases ~= nil then
  116.         count := Count(aliases);
  117.         while count ~= 0 and not found do
  118.             count := count - 1;
  119.             alias := aliases[count];
  120.             if alias@p_chKey == word then
  121.             found := true;
  122.             fi;
  123.         od;
  124.         fi;
  125.         if found then
  126.         DoSay(alias@p_chContents + " " + GetTail());
  127.         else
  128.         DoSay(line);
  129.         fi;
  130.     fi;
  131.     fi;
  132. corp;
  133.  
  134. define tp_chat proc chatIdle()void:
  135.     action a;
  136.     thing me;
  137.  
  138.     me := Me();
  139.     ignore SetPrompt(me@p_chSavePrompt);
  140.     me -- p_chSavePrompt;
  141.     a := me@p_chSaveIdle;
  142.     ignore SetCharacterIdleAction(a);
  143.     me -- p_chSaveIdle;
  144.     ignore SetCharacterInputAction(me@p_chSaveAction);
  145.     me -- p_chSaveAction;
  146.     me -- p_chChatting;
  147.     if a ~= nil then
  148.     call(a, void)();
  149.     fi;
  150. corp;
  151.  
  152. define tp_chat proc v_chat()bool:
  153.     thing me;
  154.     action oldAction;
  155.     string tail;
  156.  
  157.     me := Me();
  158.     if me@p_chChatting then
  159.     Print("You are already in chat mode!\n");
  160.     false
  161.     else
  162.     tail := GetTail();
  163.     if tail = "" then
  164.         oldAction := SetCharacterInputAction(chatHandler);
  165.         if oldAction = nil then
  166.         OPrint(FormatName(me@p_pName) + " is confused.\n");
  167.         false
  168.         else
  169.         me@p_chChatting := true;
  170.         me@p_chSaveAction := oldAction;
  171.         me@p_chSaveIdle := SetCharacterIdleAction(chatIdle);
  172.         me@p_chSavePrompt := SetPrompt("chat> ");
  173.         true
  174.         fi
  175.     else
  176.         chatHandler(tail);
  177.         true
  178.     fi
  179.     fi
  180. corp;
  181.  
  182. VerbTail(G, "c", v_chat).
  183. Synonym(G, "c", "chat").
  184.  
  185. define tp_chat proc v_whisper()bool:
  186.     string what, ch;
  187.     character who;
  188.     thing agent;
  189.  
  190.     what := GetWord();
  191.     if what == "to" then
  192.     what := GetWord();
  193.     fi;
  194.     if what = "" then
  195.     Print("Specify who you want to whisper to.\n");
  196.     false
  197.     else
  198.     ch := SubString(what, Length(what) - 1, 1);
  199.     if ch = "," or ch = ":" then
  200.         what := SubString(what, 0, Length(what) - 1);
  201.     fi;
  202.     who := Character(what);
  203.     if who = nil then
  204.         who := Character(Capitalize(what));
  205.     fi;
  206.     if who = nil then
  207.         agent := FindAgent(what);
  208.     else
  209.         agent := CharacterThing(who);
  210.     fi;
  211.     if agent = nil then
  212.         Print("Can't whisper to " + what + ".\n");
  213.         false
  214.     else
  215.         what := GetTail();
  216.         if what = "" then
  217.         Print("Specify what you want to whisper to " +
  218.             FormatName(agent@p_pName) + ".\n");
  219.         false
  220.         else
  221.         if Me()@p_pEchoPose then
  222.             Print("You whisper to " + agent@p_pName + ": " +
  223.             what + "\n");
  224.         fi;
  225.         note - Magic value of 10 is probability of being overheard;
  226.         if Whisper("", what, agent, 10) then
  227.             true
  228.         else
  229.             Print(FormatName(agent@p_pName) + " is not here!\n");
  230.             false
  231.         fi
  232.         fi
  233.     fi
  234.     fi
  235. corp;
  236.  
  237. VerbTail(G, "wh", v_whisper).
  238. Synonym(G, "wh", "whisper").
  239.  
  240. define tp_chat proc v_pose()bool:
  241.     string activity;
  242.  
  243.     activity := GetTail();
  244.     if activity = "" then
  245.     Print("You must give the pose/emote you want to do.\n");
  246.     false
  247.     elif not CanSee(Here(), Me()) then
  248.     Print("It is dark - no-one could see you " + activity + "!\n");
  249.     false
  250.     elif Me()@p_pHidden then
  251.     Print("You are hidden - no-one could see you " + activity + "!\n");
  252.     false
  253.     else
  254.     Pose("", "=> " + activity);
  255.     if Me()@p_pEchoPose then
  256.         Print("You => " + activity + ".\n");
  257.     fi;
  258.     true
  259.     fi
  260. corp;
  261.  
  262. VerbTail(G, "pose", v_pose).
  263. Synonym(G, "pose", "emote").
  264. Synonym(G, "pose", ":").
  265.  
  266. define tp_chat proc actionAdverb(string s)void:
  267.     ChatThing@ActionAdverbs := ChatThing@ActionAdverbs + s;
  268. corp;
  269.  
  270. actionAdverb("aimlessly,aimless,aim.").
  271. actionAdverb("awkwardly,awkward,awk.").
  272. actionAdverb("briefly,brief.").
  273. actionAdverb("briskly,brisk.").
  274. actionAdverb("clumsily,clumsy,clu.").
  275. actionAdverb("crazily,crazy,cra.").
  276. actionAdverb("deeply,deep.").
  277. actionAdverb("enthusiastically,enthusiastic,enthuse,ent.").
  278. actionAdverb("exitedly,excited,exc,e.").
  279. actionAdverb("fervently,fervent,fer.").
  280. actionAdverb("firmly,firm.").
  281. actionAdverb("frentically,frentic,fren,fre.").
  282. actionAdverb("furiously,furious,fur.").
  283. actionAdverb("gayly,gay.").
  284. actionAdverb("gracefully,gracefull,gra.").
  285. actionAdverb("happily,happy,h.").
  286. actionAdverb("hesitantly,hesitant,hes.").
  287. actionAdverb("hurriedly,hurry,hur.").
  288. actionAdverb("impatiently,impatient,imp.").
  289. actionAdverb("majestically,majestic,maj.").
  290. actionAdverb("merrily,merry,mer.").
  291. actionAdverb("mischievously,mischievous,mis.").
  292. actionAdverb("mockingly,mocking,mock.").
  293. actionAdverb("mysteriously,mysterious,mys.").
  294. actionAdverb("nastily,nasty,nas.").
  295. actionAdverb("naughtily,naughty,nau.").
  296. actionAdverb("passionately,passionate,pas.").
  297. actionAdverb("patiently,patient,pat.").
  298. actionAdverb("playfully,playfull,pla.").
  299. actionAdverb("pointedly,pointed,poi.").
  300. actionAdverb("politely,polite,pol.").
  301. actionAdverb("quickly,quick,qui,q,f.").
  302. actionAdverb("rapidly,rapid,rap.").
  303. actionAdverb("sadly,sad.").
  304. actionAdverb("sharply,sharp,sha.").
  305. actionAdverb("slowly,slow,slo,s.").
  306. actionAdverb("smoothly,smooth,smo.").
  307. actionAdverb("solemnly,solemn,sol.").
  308. actionAdverb("suddenly,sudden,sud.").
  309. actionAdverb("suggestively,suggest,sug.").
  310. actionAdverb("swiftly,swift,swi.").
  311. actionAdverb("tiredly,tired,tir.").
  312. actionAdverb("unhappily,unhappy,unh.").
  313. actionAdverb("vaguely,vague,vag.").
  314. actionAdverb("vigorously,vigorous,vig.").
  315. actionAdverb("violently,violent,vio.").
  316. actionAdverb("wearily,weary,wea.").
  317. actionAdverb("wildly,wild,wil.").
  318. actionAdverb("wobbly,wobble,wob.").
  319.  
  320. define tp_chat proc makeAction(string pose)bool:
  321.     string adverb;
  322.     int which;
  323.  
  324.     adverb := GetWord();
  325.     if adverb ~= "" then
  326.     which := MatchName(ChatThing@ActionAdverbs, adverb);
  327.     if which ~= -1 then
  328.         adverb := SelectName(ChatThing@ActionAdverbs, which);
  329.         if not CanSee(Here(), Me()) then
  330.         Print("It is dark - no-one could see you " + pose + "!\n");
  331.         false
  332.         elif Me()@p_pHidden then
  333.         Print("You are hidden - no-one could see you " + pose + "!\n");
  334.         false
  335.         else
  336.         Pose("", Pluralize(pose) + " " + SelectWord(adverb, 0) + ".");
  337.         if Me()@p_pEchoPose then
  338.             Print("You " + pose + " " + SelectWord(adverb, 0) + ".\n");
  339.         fi;
  340.         true
  341.         fi
  342.     else
  343.         Print("Unknown action adverb '" + adverb + "'. Known ones:\n");
  344.         which := 0;
  345.         while
  346.         adverb := SelectName(ChatThing@ActionAdverbs, which);
  347.         adverb ~= ""
  348.         do
  349.         Print("  " + adverb + "\n");
  350.         which := which + 1;
  351.         od;
  352.         false
  353.     fi
  354.     else
  355.     if not CanSee(Here(), Me()) then
  356.         Print("It is dark - no-one could see you " + pose + "!\n");
  357.         false
  358.     elif Me()@p_pHidden then
  359.         Print("You are hidden - no-one could see you " + pose + "!\n");
  360.         false
  361.     else
  362.         Pose("", Pluralize(pose) + ".");
  363.         if Me()@p_pEchoPose then
  364.         Print("You " + pose + ".\n");
  365.         fi;
  366.         true
  367.     fi
  368.     fi
  369. corp;
  370.  
  371. define tp_chat proc v_blink()bool:
  372.     makeAction("blink")
  373. corp;
  374.  
  375. define tp_chat proc v_blush()bool:
  376.     makeAction("blush")
  377. corp;
  378.  
  379. define tp_chat proc v_bow()bool:
  380.     makeAction("bow")
  381. corp;
  382.  
  383. define tp_chat proc v_cower()bool:
  384.     makeAction("cower")
  385. corp;
  386.  
  387. define tp_chat proc v_cringe()bool:
  388.     makeAction("cringe")
  389. corp;
  390.  
  391. define tp_chat proc v_curtsey()bool:
  392.     makeAction("curtsey")
  393. corp;
  394.  
  395. define tp_chat proc v_dance()bool:
  396.     makeAction("dance")
  397. corp;
  398.  
  399. define tp_chat proc v_drool()bool:
  400.     makeAction("drool")
  401. corp;
  402.  
  403. define tp_chat proc v_gesticulate()bool:
  404.     makeAction("gesticulate")
  405. corp;
  406.  
  407. define tp_chat proc v_glare()bool:
  408.     makeAction("glare")
  409. corp;
  410.  
  411. define tp_chat proc v_grovel()bool:
  412.     makeAction("grovel")
  413. corp;
  414.  
  415. define tp_chat proc v_grimace()bool:
  416.     makeAction("grimace")
  417. corp;
  418.  
  419. define tp_chat proc v_grin()bool:
  420.     makeAction("grin")
  421. corp;
  422.  
  423. define tp_chat proc v_frown()bool:
  424.     makeAction("frown")
  425. corp;
  426.  
  427. define tp_chat proc v_hop()bool:
  428.     makeAction("hop")
  429. corp;
  430.  
  431. define tp_chat proc v_nod()bool:
  432.     makeAction("nod")
  433. corp;
  434.  
  435. define tp_chat proc v_pout()bool:
  436.     makeAction("pout")
  437. corp;
  438.  
  439. define tp_chat proc v_shudder()bool:
  440.     makeAction("shudder")
  441. corp;
  442.  
  443. define tp_chat proc v_shiver()bool:
  444.     makeAction("shiver")
  445. corp;
  446.  
  447. define tp_chat proc v_shrug()bool:
  448.     makeAction("shrug")
  449. corp;
  450.  
  451. define tp_chat proc v_smile()bool:
  452.     makeAction("smile")
  453. corp;
  454.  
  455. define tp_chat proc v_smirk()bool:
  456.     makeAction("smirk")
  457. corp;
  458.  
  459. define tp_chat proc v_sneer()bool:
  460.     makeAction("sneer")
  461. corp;
  462.  
  463. define tp_chat proc v_spit()bool:
  464.     makeAction("spit")
  465. corp;
  466.  
  467. define tp_chat proc v_tremble()bool:
  468.     makeAction("tremble")
  469. corp;
  470.  
  471. define tp_chat proc v_twitch()bool:
  472.     makeAction("twitch")
  473. corp;
  474.  
  475. define tp_chat proc v_wave()bool:
  476.     makeAction("wave")
  477. corp;
  478.  
  479. define tp_chat proc v_wince()bool:
  480.     makeAction("wince")
  481. corp;
  482.  
  483. define tp_chat proc v_wink()bool:
  484.     makeAction("wink")
  485. corp;
  486.  
  487. define tp_chat proc v_yawn()bool:
  488.     makeAction("yawn")
  489. corp;
  490.  
  491. VerbTail(G, "blink", v_blink).
  492. VerbTail(G, "blush", v_blush).
  493. VerbTail(G, "bow", v_bow).
  494. VerbTail(G, "cower", v_cower).
  495. VerbTail(G, "cringe", v_cringe).
  496. VerbTail(G, "curtsey", v_curtsey).
  497. VerbTail(G, "dance", v_dance).
  498. VerbTail(G, "drool", v_drool).
  499. VerbTail(G, "gesticulate", v_gesticulate).
  500. Synonym(G, "gesticulate", "gest").
  501. VerbTail(G, "glare", v_glare).
  502. VerbTail(G, "grovel", v_grovel).
  503. VerbTail(G, "grimace", v_grimace).
  504. VerbTail(G, "grin", v_grin).
  505. VerbTail(G, "frown", v_frown).
  506. VerbTail(G, "hop", v_hop).
  507. VerbTail(G, "nod", v_nod).
  508. VerbTail(G, "pout", v_pout).
  509. VerbTail(G, "shudder", v_shudder).
  510. VerbTail(G, "shiver", v_shiver).
  511. VerbTail(G, "shrug", v_shrug).
  512. VerbTail(G, "smile", v_smile).
  513. VerbTail(G, "smirk", v_smirk).
  514. VerbTail(G, "sneer", v_sneer).
  515. VerbTail(G, "spit", v_spit).
  516. VerbTail(G, "tremble", v_tremble).
  517. VerbTail(G, "twitch", v_twitch).
  518. VerbTail(G, "wave", v_wave).
  519. VerbTail(G, "wince", v_wince).
  520. VerbTail(G, "wink", v_wink).
  521. VerbTail(G, "yawn", v_yawn).
  522.  
  523. define tp_chat proc noiseAdverb(string s)void:
  524.     ChatThing@NoiseAdverbs := ChatThing@NoiseAdverbs + s;
  525. corp;
  526.  
  527. noiseAdverb("deeply,deep,dee,d.").
  528. noiseAdverb("embarrassedly,embarrassed,embar,emb.").
  529. noiseAdverb("excitedly,excited,exc,x.").
  530. noiseAdverb("evilly,evil,evi,e.").
  531. noiseAdverb("fitfully,fitfull,fit.").
  532. noiseAdverb("gayly,gay.").
  533. noiseAdverb("happily,happy,hap,h.").
  534. noiseAdverb("hesitantly,hesitant,hes.").
  535. noiseAdverb("hollowly,hollow,hol.").
  536. noiseAdverb("loudly,loud,lou,l.").
  537. noiseAdverb("merrily,merry,mer,m.").
  538. noiseAdverb("nastily,nasty,nas.").
  539. noiseAdverb("nervously,nervous,ner.").
  540. noiseAdverb("politely,polite,pol.").
  541. noiseAdverb("quietly,quiet,qui,q.").
  542. noiseAdverb("sadly,sad,s.").
  543. noiseAdverb("sharply,sharp,sha.").
  544. noiseAdverb("sickly,sick,sic.").
  545. noiseAdverb("suddenly,sudden,sud.").
  546. noiseAdverb("tiredly,tired,tir.").
  547. noiseAdverb("vigorously,vigorous,vig.").
  548.  
  549. define tp_chat proc makeNoise(string noise)bool:
  550.     string adverb;
  551.     int which;
  552.  
  553.     adverb := GetWord();
  554.     if adverb ~= "" then
  555.     which := MatchName(ChatThing@NoiseAdverbs, adverb);
  556.     if which ~= -1 then
  557.         adverb := SelectName(ChatThing@NoiseAdverbs, which);
  558.         if Me()@p_pHidden or not CanSee(Here(), Me()) then
  559.         OPrint("You hear a " + SelectWord(adverb, 1) +
  560.             " " + noise + ".\n");
  561.         else
  562.         Pose("", Pluralize(noise) + " " + SelectWord(adverb, 0) + ".");
  563.         fi;
  564.         if Me()@p_pEchoPose then
  565.         Print("You " + noise + " " + SelectWord(adverb, 0) + ".\n");
  566.         fi;
  567.         true
  568.     else
  569.         Print("Unknown noise adverb '" + adverb + "'. Known ones:\n");
  570.         which := 0;
  571.         while
  572.         adverb := SelectName(ChatThing@NoiseAdverbs, which);
  573.         adverb ~= ""
  574.         do
  575.         Print("  " + adverb + "\n");
  576.         which := which + 1;
  577.         od;
  578.         false
  579.     fi
  580.     else
  581.     if Me()@p_pHidden or not CanSee(Here(), Me()) then
  582.         OPrint("You hear a " + noise + ".\n");
  583.     else
  584.         Pose("", Pluralize(noise) + ".");
  585.     fi;
  586.     if Me()@p_pEchoPose then
  587.         Print("You " + noise + ".\n");
  588.     fi;
  589.     true
  590.     fi
  591. corp;
  592.  
  593. define tp_chat proc v_applaud()bool:
  594.     makeNoise("applaud")
  595. corp;
  596.  
  597. define tp_chat proc v_burp()bool:
  598.     makeNoise("burp")
  599. corp;
  600.  
  601. define tp_chat proc v_cackle()bool:
  602.     makeNoise("cackle")
  603. corp;
  604.  
  605. define tp_chat proc v_cheer()bool:
  606.     makeNoise("cheer")
  607. corp;
  608.  
  609. define tp_chat proc v_chuckle()bool:
  610.     makeNoise("chuckle")
  611. corp;
  612.  
  613. define tp_chat proc v_clap()bool:
  614.     makeNoise("clap")
  615. corp;
  616.  
  617. define tp_chat proc v_cough()bool:
  618.     makeNoise("cough")
  619. corp;
  620.  
  621. define tp_chat proc v_croak()bool:
  622.     makeNoise("croak")
  623. corp;
  624.  
  625. define tp_chat proc v_cry()bool:
  626.     makeNoise("cry")
  627. corp;
  628.  
  629. define tp_chat proc v_fart()bool:
  630.     makeNoise("fart")
  631. corp;
  632.  
  633. define tp_chat proc v_gasp()bool:
  634.     makeNoise("gasp")
  635. corp;
  636.  
  637. define tp_chat proc v_giggle()bool:
  638.     makeNoise("giggle")
  639. corp;
  640.  
  641. define tp_chat proc v_groan()bool:
  642.     makeNoise("groan")
  643. corp;
  644.  
  645. define tp_chat proc v_growl()bool:
  646.     makeNoise("growl")
  647. corp;
  648.  
  649. define tp_chat proc v_grumble()bool:
  650.     makeNoise("grumble")
  651. corp;
  652.  
  653. define tp_chat proc v_grunt()bool:
  654.     makeNoise("grunt")
  655. corp;
  656.  
  657. define tp_chat proc v_hiccup()bool:
  658.     makeNoise("hiccup")
  659. corp;
  660.  
  661. define tp_chat proc v_hiccough()bool:
  662.     makeNoise("hiccough")
  663. corp;
  664.  
  665. define tp_chat proc v_hum()bool:
  666.     makeNoise("hum")
  667. corp;
  668.  
  669. define tp_chat proc v_laugh()bool:
  670.     makeNoise("laugh")
  671. corp;
  672.  
  673. define tp_chat proc v_moan()bool:
  674.     makeNoise("moan")
  675. corp;
  676.  
  677. define tp_chat proc v_mutter()bool:
  678.     makeNoise("mutter")
  679. corp;
  680.  
  681. define tp_chat proc v_purr()bool:
  682.     makeNoise("purr")
  683. corp;
  684.  
  685. define tp_chat proc v_scream()bool:
  686.     makeNoise("scream")
  687. corp;
  688.  
  689. define tp_chat proc v_sigh()bool:
  690.     makeNoise("sigh")
  691. corp;
  692.  
  693. define tp_chat proc v_snarl()bool:
  694.     makeNoise("snarl")
  695. corp;
  696.  
  697. define tp_chat proc v_sneeze()bool:
  698.     makeNoise("sneeze")
  699. corp;
  700.  
  701. define tp_chat proc v_snicker()bool:
  702.     makeNoise("snicker")
  703. corp;
  704.  
  705. define tp_chat proc v_snore()bool:
  706.     makeNoise("snore")
  707. corp;
  708.  
  709. define tp_chat proc v_sob()bool:
  710.     makeNoise("sob")
  711. corp;
  712.  
  713. define tp_chat proc v_whine()bool:
  714.     makeNoise("whine")
  715. corp;
  716.  
  717. define tp_chat proc v_whistle()bool:
  718.     makeNoise("whistle")
  719. corp;
  720.  
  721. VerbTail(G, "applaud", v_applaud).
  722. VerbTail(G, "burp", v_burp).
  723. VerbTail(G, "cackle", v_cackle).
  724. VerbTail(G, "cheer", v_cheer).
  725. VerbTail(G, "chuckle", v_chuckle).
  726. VerbTail(G, "clap", v_clap).
  727. VerbTail(G, "cough", v_cough).
  728. VerbTail(G, "croak", v_croak).
  729. VerbTail(G, "cry", v_cry).
  730. VerbTail(G, "fart", v_fart).
  731. VerbTail(G, "gasp", v_gasp).
  732. VerbTail(G, "giggle", v_giggle).
  733. VerbTail(G, "groan", v_groan).
  734. VerbTail(G, "growl", v_growl).
  735. VerbTail(G, "grumble", v_grumble).
  736. VerbTail(G, "grunt", v_grunt).
  737. VerbTail(G, "hiccup", v_hiccup).
  738. VerbTail(G, "hiccough", v_hiccough).
  739. VerbTail(G, "hum", v_hum).
  740. VerbTail(G, "laugh", v_laugh).
  741. VerbTail(G, "moan", v_moan).
  742. VerbTail(G, "mutter", v_mutter).
  743. VerbTail(G, "purr", v_purr).
  744. VerbTail(G, "scream", v_scream).
  745. VerbTail(G, "sigh", v_sigh).
  746. VerbTail(G, "snarl", v_snarl).
  747. VerbTail(G, "sneeze", v_sneeze).
  748. VerbTail(G, "snicker", v_snicker).
  749. VerbTail(G, "snore", v_snore).
  750. VerbTail(G, "sob", v_sob).
  751. VerbTail(G, "whine", v_whine).
  752. VerbTail(G, "whistle", v_whistle).
  753.  
  754. unuse tp_chat
  755.